package com.itcast.admin.controller;


import com.itcast.admin.domain.CheckupItem;
import com.itcast.admin.domain.request.CreateItemReqDTO;
import com.itcast.admin.domain.request.ItemPageReqDTO;
import com.itcast.admin.domain.request.QueryEnableGroupAndItemReqDTO;
import com.itcast.admin.domain.request.UpdateItemReqDTO;
import com.itcast.admin.domain.response.ItemPageResDTO;
import com.itcast.admin.domain.response.QueryEnableGroupAndItemResDTO;
import com.itcast.admin.service.ICheckupItemService;
import com.jzo2o.common.model.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 体检组 前端控制器
 * </p>
 *
 * @author author
 * @since 2024-11-04
 */
@RestController
@RequestMapping("/admin/check-item")
@Api(tags = "体检项相关接口")
public class CheckupItemController {

    @Autowired
    private ICheckupItemService checkupItemService;

    @GetMapping("/pageQuery")
    @ApiOperation("获取体检项列表")
    public PageResult<ItemPageResDTO> pageQuery(ItemPageReqDTO itemPageReqDTO) {
        return checkupItemService.pageQuery(itemPageReqDTO);
    }

    @PostMapping
    @ApiOperation("新增体检项")
    public void createCheckItem(@RequestBody CreateItemReqDTO createItemReqDTO) {
        checkupItemService.createCheckItem(createItemReqDTO);
    }

    @GetMapping("/{id}")
    @ApiOperation("根据id查询体检项")
    public CheckupItem getItemById(@PathVariable Integer id) {
        return checkupItemService.getItemById(id);
    }

    @PutMapping("/{id}")
    @ApiOperation("根据id修改体检项")
    public void updateItemById(@PathVariable Integer id, @RequestBody UpdateItemReqDTO updateItemReqDTO) {
        checkupItemService.updateItemById(id, updateItemReqDTO);
    }

    @GetMapping("/checkModify/{id}")
    @ApiOperation("校验更新操作会影响下架的套餐")
    public List<String> checkModifyById(@PathVariable Integer id) {
        return checkupItemService.checkModifyById(id);
    }
    @GetMapping("/checkDisable/{id}")
    @ApiOperation("校验禁用操作会影响下架的套餐")
    public List<String> checkDisableById(@PathVariable Integer id) {
        return checkupItemService.checkDisableById(id);
    }

    @PutMapping("/enable/{id}")
    @ApiOperation("根据id启用体检项")
    public void enableItemById(@PathVariable Integer id) {
        checkupItemService.enableItemById(id);
    }

    @PutMapping("/disable/{id}")
    @ApiOperation("根据id禁用体检项")
    public void disableItemById(@PathVariable Integer id) {
        checkupItemService.disableItemById(id);
    }
    @DeleteMapping("/{id}")
    @ApiOperation("根据id删除体检项")
    public void deleteItemById(@PathVariable Integer id) {
        checkupItemService.deleteItemById(id);
    }
    @GetMapping("/queryEnabledGroupAndItem")
    @ApiOperation("查询启用的体检组和体检项")
    public List<QueryEnableGroupAndItemResDTO> queryEnabledGroupAndItem(QueryEnableGroupAndItemReqDTO queryEnableGroupAndItemReqDTO) {
        return checkupItemService.queryEnabledGroupAndItem(queryEnableGroupAndItemReqDTO);
    }
    @GetMapping("/queryItemIdsBySetmealId")
    @ApiOperation("查询套餐id关联的检查项id列表")
    public List<Integer> queryItemIdsBySetmealId(Integer id) {
        return checkupItemService.queryItemIdsBySetmealId(id);
    }
}
